package com.hui.platform.mybatisplusgenerator.devops;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 模块记录枚举:这里需要记录生成值
 * <p>
 * author: 作者
 * moduleName: 模块名，小写，注意更新表字段的时候，模块与表所在模块需要对应
 * moduleDesc: 模块描述
 * includeTables: 需要生成的表 --不能为空   表名命名规范：模块名_xxx_xxx_...
 * <p>
 * 建表策略
 * 1.表名必须为：模块名（小写）_表名
 * 2.必须写表字段comment和表的comment，若带有"，请用\"代替
 * 3.表的字段中必须有id列并且作为主键列,时间值统一使用datetime(唯一时间值，可选JDK8的Intent（绝对时刻））
 * --`id` bigint(20) NOT NULL AUTO_INCREMENT,
 * 4.（可选）表中可以存在
 * --`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 * --`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
 * --`deleted` int(1) NOT NULL DEFAULT 0 COMMENT '是否删除',    //逻辑删除，详情参照Mybatis-Plus的官网（如果实现则字段值：deleted）效果: 使用mp自带方法删除和查找都会附带逻辑删除功能 (自己写的xml不会)
 * --`tenant_id` bigint(20) NULL COMMENT '租户ID',    //多租户使用(暂不考虑）
 * --//乐观锁等等请看详情参照Mybatis-Plus的官网
 * 5.可以使用mysql的约束对数据库数据进行保护，如not null ，unique ，foreign key，primary key进行约束
 *
 * @author Peng
 * @date 2019/12/19
 */
@AllArgsConstructor
@Getter
public enum ModuleInfoEnum {
    /**
     * 逆向生成配置：
     * author 作者
     * moduleName 模块名（与business中的模块名对应）
     * moduleDesc 模块简介
     * includeTables 要生成的表
     * TODO edit
     */
    TEST_MODULE("author", "moduleName", "moduleDesc", new String[]{
            "includeTables"
    }),

    ;
    //-----------生成位置----------

    public static final String PROJECT_PATH = System.getProperty("user.dir") + "/falsework-api";

    public static final String MODULE_PARENT = "com.hui.platform.falseworkapi.service.business";

    //-----------数据字段----------

    private String author;
    private String moduleName;
    private String moduleDesc;
    private String[] includeTables;
}